1. Field of the Invention
The present invention relates to the field of computer system BIOS initialization, and more particularly to a method and apparatus of logging device errors during BIOS initialization and making a record of those errors available to devices during the BIOS initialization.
2. Background Information
The BIOS is a collection of executable programs that initializes a computer system. At least a portion of the BIOS resides in a non-volatile random access storage device in the computer system, and upon turning on the computer system, or alternatively resetting the computer system, the BIOS executes from the nonvolatile storage device. An executing BIOS initializes the computer system. The initialization task generally includes checking for the presence or absence of devices within the computer system, initializing those devices that require software initialization, testing the computer system hardware, reporting the system configuration and diagnostic status, and loading an operating system.
The devices comprising the computer system are alternatively resident on the computer system chipset, or coupled to the chipset via a system of buses that may include a host bus, legacy buses, and Peripheral Component Interconnect (PCI) buses. The host bus supports the highest performance resources on a platform and generally includes the CPU, a cache, and platform memory that may include dynamic random access memory. The term “platform” represents the physical collection of hardware on a single circuit board. The legacy buses may include the Industry Standard Architecture (ISA), EISA, and MC buses. Each of the host bus, legacy buses, and the PCI bus are well known to those skilled in the art.
The devices themselves are alternatively separate physical devices, or software routines. A separate physical device often has a driver software routine resident on system memory that forms the interface between the BIOS and the device. The BIOS itself can be considered to include at least one of these device routines if that routine executes a BIOS function, and particularly if that routine resides on the same non-volatile storage device as the BIOS.
During a computer system BIOS routine initialization, each device sequentially initializes under the control of the executing BIOS routine. However, an at least one device that has already initialized may acquire component and system information during its execution that is useful to and should be provided to at least one other device. Examples of such information is a device that has tried to read from a memory (e.g. a disk) and encountered an error, and a device that is coupled to a channel that is presumed to be losing data. This information includes error information, status information, configuration information, and event information pertaining to devices and systems. The acquired information should be able to be made available to other devices. These other devices can include information logging devices and devices whose execution and/or state may be dependent upon the information.
However, when some of these other devices have not yet initialized, they cannot yet be sent this information by the acquiring devices. These other devices should receive all the acquired information already generated after each initializes, and should receive all the information acquired after each initializes as the information is acquired. Moreover, each of the information acquiring devices and information requesting device should communicate with the BIOS and receive and transmit this information in a standard way, so that each receiving and transmitting device can receive or transmit information without being aware of the other devices in the computer system, or require an ad hoc interface and processing routine for each separate device or computer system.